/*
		strcmp、strstr函数的模拟实现

		夏思成

		2024年4月1日

		西科大15号公寓楼
*/


////strcmp函数的模拟实现
//
//#include <stdio.h>
//#include <assert.h>
//
//int my_strcmp(const char* p1, const char* p2)
//{
//	assert(p1 && p2);
//
//	while (*p1 == *p2)
//	{
//		p1++;
//		p2++;
//
//		if (*p1 == '\0')
//		{
//			return 0;
//		}
//	}
//	return *p1 - *p2;
//}
//
//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "abcq";
//
//	int ret = my_strcmp(arr1, arr2);
//	printf("%d\n", ret);
//	return 0;
//}



//strstr函数的模拟实现

#include <stdio.h>
#include <assert.h>

char* my_strstr(const char* p1, const char* p2)
{
	assert(p1 && p2);

	if (!*p2)
	{
		return (char*)p1;
	}

	char* ch = (char*)p1;
	char* s1;
	char* s2;

	while (*ch)
	{

		s1 = ch;
		s2 = (char*)p2;

		while (*s1 && *s2 && !(*s1 - *s2))
		{
			s1++;
			s2++;
		}

		if (*s2 == '\0')
		{
			return ch;
		}

		ch++;
	}
	return NULL;
}

int main()
{
	char arr1[] = "this is an apple";
	char arr2[] = "is";

	char* ret = my_strstr(arr1, arr2);
	printf("%s\n", ret);
	return 0;
}